package com.xts.weinfo.base;

import android.app.ActivityManager;
import android.app.Application;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.sqlite.SQLiteDatabase;
import android.support.multidex.MultiDex;
import android.support.multidex.MultiDexApplication;
import android.text.TextUtils;
import android.util.Log;


import com.hyphenate.chat.EMClient;
import com.hyphenate.chat.EMOptions;
import com.hyphenate.easeui.EaseUI;
import com.umeng.commonsdk.UMConfigure;
import com.umeng.socialize.PlatformConfig;

import java.util.Iterator;
import java.util.List;




//app一上来会先走application是有条件的,要求app原来所在的进程被杀死才会走,
//如果仅仅是activity销毁了,不一定走
//Android 系统为了提高app启动的速度,在界面销毁之后,进程不会被杀死, 而是变成一个空进程
//友盟ak: 5eddda57570df3deb3000014
public class BaseApp extends Application {
    public static BaseApp sContext;

    public static Resources getRes() {
        return sContext.getResources();
    }

    public static BaseApp getInstance(){
        return sContext;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        sContext = this;

        //解决方法数量超过65536 步骤3
        MultiDex.install(this);

        initUmeng();
        initEasemob();
    }

    //初始化环信
    private void initEasemob() {
        EMOptions options = new EMOptions();
// 默认添加好友时，是不需要验证的，改成需要验证
        //options.setAcceptInvitationAlways(true);
// 是否自动将消息附件上传到环信服务器，默认为True是使用环信服务器上传下载，如果设为 false，需要开发者自己处理附件消息的上传和下载
        //options.setAutoTransferMessageAttachments(true);
// 是否自动下载附件类消息的缩略图等，默认为 true 这里和上边这个参数相关联
        options.setAutoDownloadThumbnail(true);

        //如果你的 APP 中有第三方的服务启动，请在初始化 SDK（EMClient.getInstance().
        // init(applicationContext, options)）方法的前面添加以下相关代码
        // （相应代码也可参考 Demo 的 application），使用 EaseUI 库的就不用理会这个。

        int pid = android.os.Process.myPid();
        String processAppName = getAppName(pid);
// 如果APP启用了远程的service，此application:onCreate会被调用2次
// 为了防止环信SDK被初始化2次，加此判断会保证SDK被初始化1次
// 默认的APP会在以包名为默认的process name下运行，如果查到的process name不是APP的process name就立即返回

        if (processAppName == null ||!processAppName.equalsIgnoreCase(getPackageName())) {

            // 则此application::onCreate 是被service 调用的，直接返回
            return;
        }

        //easeui
        EaseUI.getInstance().init(this, options);
//初始化
        EMClient.getInstance().init(this, options);
//在做打包混淆时，关闭debug模式，避免消耗不必要的资源
        EMClient.getInstance().setDebugMode(true);
    }

    private String getAppName(int pID) {
        String processName = null;
        ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
        List l = am.getRunningAppProcesses();
        Iterator i = l.iterator();
        PackageManager pm = this.getPackageManager();
        while (i.hasNext()) {
            ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) (i.next());
            try {
                if (info.pid == pID) {
                    processName = info.processName;
                    return processName;
                }
            } catch (Exception e) {
                // Log.d("Process", "Error>> :"+ e.toString());
            }
        }
        return processName;
    }


    //友盟初始化
    private void initUmeng() {

        //设置要打log
        UMConfigure.setLogEnabled(true);
        //第一个参数:上下文
        //第二个:umeng的appkey
        //第三个:渠道号
        //第四个:设备种类
        //第五个:做友盟推送的时候需要
        UMConfigure.init(this,"5eddda57570df3deb3000014"
                ,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0

        //三方信息配置:ak,appSecret
        PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");

        //App Key：3732942357
        //App Secret：1ef0fe62bff080d62ebbea3890ac0165
        //注意:第三个参数需要在微博开放平台的高级设置里面设置,OAuth2.0 授权设置
        PlatformConfig.setSinaWeibo("3732942357",
                "1ef0fe62bff080d62ebbea3890ac0165",
                "http://sns.whalecloud.com");
        //qq清单文件中也需要appid
        //登录需要app通过审核,可以用我的,但是要保证包名和签名文件也用我的
        /*APP ID：101849015
        APP Key：cfeed7f3663f60d163c17cf922253b33
        */

        PlatformConfig.setQQZone("101849015", "cfeed7f3663f60d163c17cf922253b33");
        PlatformConfig.setQQFileProvider("com.xts.weinfo.fileprovider");
    }
}
